home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio
/
Ham Radio CD-ROM (Emerald Software) (1995).ISO
/
ant
/
antenna2
/
circular.bas
< prev
next >
Wrap
BASIC Source File
|
1986-08-13
|
4KB
|
134 lines
10 SCREEN 2,0:CLS:KEY OFF
20 ' JUNE 12, 1986
30 ' ARRAY FACTOR OF CIRCULAR ARRAY
40 ' AHMAD FAIZAL MOHD ZAIN
50 '
60 PRINT" ARRAY FACTOR OF UNIFORM CIRCULAR ARRAY":PRINT:PRINT
70 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
80 DIM AF(370),Y(400)
90 PI=3.141592:TWOPI=2*PI
100 PRINT"Specify main beam direction":PRINT
110 INPUT"DIRECTION IN THETA ";THE0
120 INPUT"DIRECTION IN PHI ";PHI0
130 INPUT"NUMBER OF ELEMENTS ";N
140 INPUT"RADIUS OF ARRAY ";A
150 TH=THE0*PI/180:PH=PHI0*PI/180
160 STHE0=SIN(TH):SPHI0=SIN(PH):CPHI0=COS(PH)
170 STP0=STHE0*SPHI0:CTP0=STHE0*CPHI0
180 P=0 'xz-plane
190 YMAX=0:YMIN=0
200 LOCATE 24,1:PRINT"Please wait...";
210 GOSUB 390
220 CLS
230 GOSUB 660
240 LOCATE 24,1
250 INPUT"Type return to continue";QQ
260 GOSUB 740
270 LOCATE 22,10:PRINT"Antenna pattern in xz-plane (PHI=0)"
280 LOCATE 23,1:PRINT"I'm doing yz-plane calculation. Please wait...";
290 P=90 'yz-plane
300 YMAX=0:YMIN=0
310 GOSUB 390
320 LOCATE 23,1:PRINT"Type return to continue... ";:INPUT QQ
330 GOSUB 740
340 LOCATE 22,10:PRINT"Antenna pattern in yz-plane (PHI=90)"
350 GOSUB 1270
360 '
370 END
380 '
390 FOR THE=0 TO 360
400 TH=THE*PI/180
410 PHI=P*PI/180
420 REAL=0:IMAG=0
430 FOR I=1 TO N
440 STH=SIN(TH):SPHI=SIN(PHI)
450 CPHI=COS(PHI)
460 YY=STH*SPHI-STP0:XX=STH*CPHI-CTP0
470 IF XX>0 THEN EPSI=ATN(YY/XX)
480 IF XX<0 THEN EPSI=PI*SGN(YY)+ATN(YY/XX)
490 IF XX=0 THEN EPSI=(PI/2)*SGN(YY)
500 IF XX<0 AND YY=0 THEN EPSI=PI
510 RHO=A*SQR((STH*CPHI-CTP0)^2+(STH*SPHI-STP0)^2)
520 PHIN=TWOPI*I/N:CPE=COS(PHIN-EPSI)
530 TPIRHO=TWOPI*RHO*CPE
540 REAL=REAL+COS(TPIRHO)
550 IMAG=IMAG+SIN(TPIRHO)
560 NEXT I
570 AF(THE)=SQR(REAL*REAL+IMAG*IMAG)
580 Y(THE)=ABS(AF(THE))
590 Y(THE)=20*FN LOGTEN(Y(THE))
600 IF Y(THE)>YMAX THEN YMAX=Y(THE)
610 IF Y(THE)<YMIN THEN YMIN=Y(THE)
620 NEXT THE
630 YMAX=YMAX-YMIN
640 RETURN
650 '
660 PRINT"PHASE SHIFTS FOR EACH ELEMENTS ARE :-"
670 FOR I=1 TO N
680 PHIN=2*PI*I/N
690 ALPN=-2*PI*SIN(THE0)*COS(PHI0-PHIN)
700 ALPN=ALPN*180/PI
710 PRINT "ALPHA(";I;:PRINT USING ") = ####.##";ALPN
720 NEXT I
730 RETURN
740 SCREEN 2,0:CLS
750 VIEW (10,2)-(400,164),,1
760 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
770 CLS
780 '
790 CIRCLE (0,0),YMAX,1
800 CIRCLE (0,0),.75*YMAX,1
810 CIRCLE (0,0),.5*YMAX,1
820 CIRCLE (0,0),.25*YMAX,1
830 '
840 LINE (-YMAX,0)-(YMAX,0),1
850 LINE (0,YMAX)-(0,-YMAX),1
860 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
870 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
880 '
890 PSET (0,Y(0))
900 FOR TH=0 TO 360
910 XX=TH*PI/180
920 Y(TH)=Y(TH)-YMIN
930 Y=Y(TH)*COS(XX)
940 X=Y(TH)*SIN(XX)
950 LINE -(X,Y),2
960 NEXT TH
970 LOCATE 1,53:PRINT" CIRCULAR ARRAY"
980 LOCATE 2,53:PRINT USING "No. OF ELEMENTS = ###";N
990 LOCATE 3,53:PRINT USING "Radius of array = ###.##";A
1000 LOCATE 5,53:PRINT USING "MAIN BEAM IN THETA = ###";THE0
1010 LOCATE 6,53:PRINT USING "MAIN BEAM IN PHI = ###";PHI0
1020 LOCATE 11,53:PRINT USING"dB SCALE = ###.##";YMAX*.25;:PRINT" dB/div"
1030 LOCATE 12,53:PRINT"0 dB on largest circle"
1040 LOCATE 2,26:PRINT"0":LOCATE 20,25:PRINT"180"
1050 RETURN
1060 A$=INKEY$
1070 IF LEN(A$)<>2 THEN 1060
1080 ANS=ASC(MID$(A$,2,1))
1090 IF ANS=72 THEN L=L+.1
1100 IF ANS=80 THEN L=L-.1
1110 IF ANS=75 THEN L=L-1
1120 IF ANS=77 THEN L=L+1
1130 IF L<=0 THEN L=.1
1140 IF ANS=84 THEN 1160
1150 GOTO 1060
1160 T$="DO YOU WANT TO RUN AGAIN (Y/N)?":LC=25:GOSUB 1220
1170 AN$=INKEY$
1180 IF AN$="Y" OR AN$="y" THEN RUN
1190 IF AN$="N" OR AN$="n" THEN END
1200 GOTO 1160
1210 :
1220 LOCATE LC,(40-LEN(T$))/2+1:PRINT T$;:RETURN 'SUBROUTINE TO CENTRE TEXT
1230 END
1240 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
1250 PRINT"I'M D OME CALCULATION. PLEASE WAIT..."
1260 RETURN
1270 T$=" DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1330
1280 AN$=INKEY$
1290 IF AN$="Y" OR AN$="y" THEN RUN
1300 IF AN$="N" OR AN$="n" THEN END
1310 GOTO 1270
1320 :
1330 LOCATE LC,1:PRINT T$:RETURN